package com.bit.blog.common.util;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.nio.charset.StandardCharsets;
import java.util.UUID;

public class SecurityUtils {

    /**
     * 加密
     * @param password  明文密码
     * @return  盐值 + md5(盐值+明文)
     */
    public static String enrcypt(String password){
        String salt = UUID.randomUUID().toString().replace("-", "");
        //密文  md5(salt+明文)
        String finalPassword = DigestUtils.md5DigestAsHex((salt + password).getBytes(StandardCharsets.UTF_8));
        //存储到sql中的是   盐值+密文
        return salt+finalPassword;
    }

    /**
     * 密码验证
     * @param password 用户输入的明文密码
     * @param sqlPassword 数据库中存储的  盐值+密文
     * @return true-正确, false-错误
     */
    public static  Boolean verify(String password, String sqlPassword){
        if (!StringUtils.hasLength(password) || !StringUtils.hasLength(sqlPassword)){
            return false;
        }
        if (sqlPassword.length()!=64){
            return false;
        }
        String salt = sqlPassword.substring(0,32);
        //密文  md5(salt+明文)
        String finalPassword = DigestUtils.md5DigestAsHex((salt + password).getBytes(StandardCharsets.UTF_8));
        return sqlPassword.equals(salt+finalPassword);
    }
}
